#include <stdio.h>
#include <pthread.h>

// 全局变量
// 在两个子线程中都需要对 gNumber 进行修改
// 导致出现了 bug
//
// 此时全局变量成为了临界资源，必须要进行加锁
// 不同的子线程要互斥访问临界资源

int gNumber = 0;

void * threadFunction1(void *)
{
    int cnt = 100000;
    while (cnt-- > 0)
    {
        ++gNumber;
    }

    return NULL;
}

void * threadFunction2(void *)
{
    int cnt = 100000;
    while (cnt-- > 0)
    {
        ++gNumber;
    }

    return NULL;
}

int main()
{
    pthread_t pthid1 , pthid2;
    pthread_create(&pthid1 , NULL , threadFunction1 , NULL);
    pthread_create(&pthid2 , NULL , threadFunction2 , NULL);

    pthread_join(pthid1 , NULL);
    pthread_join(pthid2 , NULL);

    printf("main thrad : gNumber : %d \n" , gNumber);

    return 0;
}

